Javascript忍者秘籍

十三
311,处理程序的管理

十四

后几章(with之后,包括第四部分)代码没有手动去实现

函数(未考虑匿名函数)

声明
声明提前:funtion f(){} 相当于变量(内存)声明,
提前到最前面,里面定义的内容也会一起提前(var f=function(){},或者其他的f会覆盖掉function f())
调用
调用前,后调用后不一样
没有调用之前,只是声明,开辟了一个function的空间
调用之后,函数里面定义的内容才会产生作用
函数名后面有()都相当于函数调用了;如果没有返回值(return ),返回undefined
function f(){this.a=’aa’} //what is this
1>做为函数调用,this–>window
2>方法, this–>obj
3>构造器 new f()区别于f()
创建一个新的空对象
传递给 this参数,从而成为构造器的函数上下文
如果没有显示的返回值,新创建的对象则作为构造器的返回值进行返回

4>自有指定 上下文 apply,call
每个函数都有apply()和call()方法

for-each() 该函数在数组的每个元素上都进行回调调用
在函数式编程中,这种风格更简洁,并优于传统的那些for语句;闭包后,更明显(代码重用)
这种迭代函数,可以很简单的将‘当前’元素作为参数传递给回调函数,
但大多数情况,都是京当前元素作为回调函数的函数上下文

匿名函数

事件处理程序,对象方法,回调
window.onload=function(){}
var ninja={
shout:function(){}
}
ninja.shout();
setTimeou(function(){},500);

4.2递归
命名函数中
匿名函数中的递归:
方法中

4.3将函数视为对象
和其他对象一样,可以给函数添加属性

注意:!!的使用

4.4可变长度的参数列表
js没有函数重载–参数列表的灵活性是关键
4.4.1 apply()支持可变参数
4.4.2 arguments
函数的length,和arguments 的length不一样
函数重载方式:参数类型,特定参数是否存在,参数个数(函数的length)

5闭包

5.2使用闭包
1、私有变量,
2、回调($.ajax)和定时器(动画,未将变量放到全局作用域)
5.3绑定上下文

123—102第五章 闭包

定时器

1、计算密集型的代码
2、动画
3、异步测试套件

还需研究
第五章:P120之后
第六章:最后 类
第八章:中央计时器,异步检测

跨浏览器

可重用代码开发的五大关注点:
浏览器的bug、浏览器的bug修复、浏览器缺失的功能、外部代码、浏览器回归
公理:记住过去、考虑未来、测试现在

封装代码-jQuery

避免植入属性

11.2.4缺失的功能
优雅降级、向后兼容

knowledge is no pay,reward is kindness
0%